package com.xigua.数组;


import java.util.ArrayList;
import java.util.List;

/**
 * @author LiRongHua
 * @Title: ${file_name}
 * @Package ${package_name}
 * @Description: 你和一群强盗准备打劫银行。给你一个下标从 0 开始的整数数组 security ，
 * 其中 security[i] 是第 i 天执勤警卫的数量。日子从 0 开始编号。同时给你一个整数 time 。
 *如果第 i 天满足以下所有条件，我们称它为一个适合打劫银行的日子：
 *第 i 天前和后都分别至少有 time 天。
 *第 i 天前连续 time 天警卫数目都是非递增的。
 *第 i 天后连续 time 天警卫数目都是非递减的。
 *更正式的，第 i 天是一个合适打劫银行的日子当且仅当：security[i - time] >= security[i - time + 1] >= ... >= security[i] <= ... <= security[i + time - 1] <= security[i + time].
 *
 *请你返回一个数组，包含 所有 适合打劫银行的日子（下标从 0 开始）。返回的日子可以 任意 顺序排列。
 *
 *
 * @date 2022/3/611:14
 */
public class _2100_适合打劫银行的日子 {

    public static void main(String[] args) {
        List<Integer> integers = goodDaysToRobBank(new int[]{5, 3, 3, 3, 5, 6, 2}, 2);
        for (int i = 0; i < integers.size(); i++) {
            System.out.print(integers.get(i)+" ");
        }
    }

    public static List<Integer> goodDaysToRobBank(int[] security, int time) {
        int length = security.length;
        int left[] = new int[length];
       int right[] = new int[length];
        for (int i = 1; i < length; i++) {
            if (security[i] <= security[i-1] ){
                left[i] = left[i-1]+1;
            }
            if (security[length-1-i] <= security[length-i] ){
                right[length-1-i] = right[length-i]+1;
            }
        }
        List<Integer> ans = new ArrayList<>();
        for (int i = time; i < length-time; i++) {
            if (time<=right[i] && time<=left[i]){
                ans.add(i);
            }
        }

        return ans;
    }

}


